package br.com.conhecimento.core.data;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import br.com.conhecimento.core.exception.CoreConhecimentoException;
import br.com.conhecimento.core.model.GestaoDemandaParametrizacao;
import br.com.conhecimento.core.model.GestaoUsuario;

@Repository
@Transactional
public class GestaoDemandaParametrizacaoDaoImpl extends GenericDaoImpl<GestaoDemandaParametrizacao, Integer> implements GestaoDemandaParametrizacaoDao {

	@Autowired
	private GestaoUsuarioDao gestaoUsuarioDao;
	
	@Autowired
	@Override
	public void init(SessionFactory sessionFactory) {
		this.setSessionFactory(sessionFactory);
	}

	@Override
	public GestaoDemandaParametrizacao getParametrizacaoUsuario(Integer idUsuario) throws CoreConhecimentoException {
		Criteria crit = getSession().createCriteria(GestaoDemandaParametrizacao.class);
		
		if(idUsuario != null) {
			GestaoUsuario usuario = gestaoUsuarioDao.getUsuario(idUsuario);
			
			if(usuario != null) {
				crit.add(Restrictions.eq("usuario", usuario));
			}
		}
		
		return (GestaoDemandaParametrizacao) crit.uniqueResult();
	}
}
